package com.nuyoah.controller;


import com.nuyoah.common.lang.Result;
import com.nuyoah.entity.NewsResource;
import com.nuyoah.service.NewsResourceService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;

import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;

/**
 * 资讯资源管理控制器，负责处理与资讯资源相关的增删改查操作。
 *
 * @author xyx
 * @since 2024-06-03
 */
@RestController
@RequestMapping("/resource")
public class NewsResourceController {

    @Autowired
    private NewsResourceService newsResourceService;

    //新增资讯资源接口

    /**
     * 添加一个新的资讯资源。
     *
     * @param newsResource 待添加的资讯资源对象，包含资讯资源的详细信息。
     * @return 返回操作结果，成功则包含成功消息。
     */
    @RequestMapping("/add")
    public Result addNewsResource(@RequestBody NewsResource newsResource) {
        newsResourceService.addNewsResource(newsResource);
        return Result.succ("新增资讯资源成功");
    }


    /**
     * 删除新闻资源。
     *
     * @param id 资源的唯一标识符。通过此标识符定位并删除特定的新闻资源。
     * @return 返回一个表示操作结果的Result对象。如果删除成功，返回成功消息。
     * @RequestMapping 注解用于映射HTTP请求，此处表示对"/delete"路径的POST请求进行处理。
     * @RequestParam 注解用于从HTTP请求参数中获取id值。
     */
    @RequestMapping("/delete")
    public Result deleteNewsResource(@RequestParam("id") Integer id) {
        // 调用服务层方法，根据传入的id删除新闻资源
        //根据ID删除资讯资源
        newsResourceService.deleteNewsResource(id);
        // 返回操作成功的结果信息
        return Result.succ("删除资讯资源成功");
    }


    //修改资讯资源接口

    /**
     * 更新一个指定的资讯资源信息。
     *
     * @param newsResource 待更新的资讯资源对象，包含更新后的资讯资源信息。
     * @return 返回操作结果，成功则包含成功消息。
     */
    @RequestMapping("/update")
    public Result updateNewsResource(@RequestBody NewsResource newsResource) {
        newsResourceService.updateNewsResource(newsResource);
        return Result.succ("修改资讯资源成功");
    }

    //查询资讯资源接口

    /**
     * 查询所有的资讯资源。
     *
     * @return 返回操作结果，包含所有资讯资源的列表。
     */
    @RequestMapping("/query")
    public Result queryNewsResource() {
        //获取所有资讯资源
        return Result.succ(newsResourceService.queryNewsResource());
    }
    /**
     * 获取学习咨询资源
     * <p>
     * 该接口用于获取与学习咨询相关的信息资源。通过调用newsResourceService的getConsultation方法，
     * 获取学习咨询资源列表，并将结果封装在Result对象中返回。
     * </p>
     * @return Result 对象，包含获取的学习咨询资源列表。成功时，Result的状态码为200。
     */
//学习相关的资讯资源接口
    @RequestMapping("/consultation")
    public Result getConsultation() {
        //获取所有学习相关的资讯资源
        return Result.succ(newsResourceService.getConsultation());
    }

    /**
     * 获取竞赛资讯资源
     * <p>
     * 该接口用于获取与竞赛相关的资讯信息。通过调用newsResourceService的getCompetition方法，
     * 获取竞赛资讯资源列表，并将结果封装在Result对象中返回。
     * </p>
     * @return Result 对象，包含获取的竞赛资讯资源列表。成功时，Result的状态码为200。
     */
//竞赛相关的资讯资源接口
    @RequestMapping("/competition")
    public Result getCompetition() {
        //获取所有竞赛相关的资讯资源
        return Result.succ(newsResourceService.getCompetition());
    }


}
